/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package webservices;

import BaseDatos.BaseDatos;
import BaseDatos.Utils;
import BaseDatos.Validadores;
import Objetos.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
 * 
 * @author ARMGARCES
 */
@WebService(serviceName = "Usuarios", 
            targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios")
public class Usuarios {
    private final String target = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios";
    private static BaseDatos bd;
    /**
     * Alamacena en BD o restaura una sesion, retorna id de sesion.
     * Recibe un objeto tipo Sesion, valida que
     * los campos esten llenos y que coincida usuario y contraseña. Si pasa los validadores
     * retorna la sesion, si no, retorna null
     * @param _sesion El objeto sesion que recibe, debe traer llenos los atributos: horaIni, user, pswd y codTel.
     * 
     * @return Retorna un obejto sesion con los atributos idUser, idSesion y Status seteados
     */
    @WebMethod(operationName = "iniciarSesion")
    public Sesion iniciarSesion(@WebParam(name = "sesion",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Sesion _sesion){        
        try{
            System.out.println("_sesion = " + _sesion);
            //Validar que los campos requeridos lleguen llenos.
            if( Validadores.sesionIsNotNull(_sesion) ){
                //Valida que el usuario exista
                int iduser = Validadores.validarUsuario(_sesion.getUser(), _sesion.getPswd());
                _sesion.setIdUser(iduser);
                if (iduser > 0){
                    //Valida si hay una sesion ya abierta
                    int idSesionAbierta = Validadores.validarSesionesAbiertas(_sesion);
                    //Si existe una sesion abierta, la restaura (es reenviada al movil)
                    if(idSesionAbierta >0){
                        System.out.println("Restaurando Sesion #"+idSesionAbierta);
                        // Status set(1);
                        _sesion.setStatus(1);
                        Sesion _restaurar = new Sesion();
                        _restaurar = BaseDatos.restaurarSesion(idSesionAbierta);
                        _restaurar.setIdUser(iduser);
                        _restaurar.setUser(_sesion.getUser());
                        _restaurar.setCodtel(_sesion.getCodtel());
                        return _restaurar;
                    }else{      //Crea una Sesion Nueva                        
                        _sesion = this.almacenarInicioSesion(_sesion);
                        _sesion.setIdUser(iduser);
                        if(_sesion.getStatus()>0){
                            System.out.println("Sesion Iniciada con Exito");
//                            Log.newLog("Sesion Iniciada con Exito",Utils.getTime(),1,_sesion.getId(),_sesion.getUser());
                            // Status set(2);
                            _sesion.setStatus(2);
                        }
                        return _sesion;
                    }
                }else{
                    System.out.println("Usuario o Contraseña Invalidos");
                    // Status set(-2);
                    _sesion.setStatus(-2);
                }     
            }else{               
                //Datos de Entrada incompletos o Vacios
                // Status set(-3);
                _sesion.setStatus(-3);
                System.out.println("Datos de Entrada incompletos o vacios");  
            }
        }catch(Exception e){
            System.out.println("error iniciarSesion: "+e);
            e.printStackTrace();
            // Status set(-1);
            _sesion.setStatus(-1);
        }
        return _sesion;
    }
    
    /**
     * Almacena la sesion en BD y regresa el id de la sesion.
     * Recibe un objeto tipo Sesion y almacena en la BD
     * @param _sesion Este objeto es recibido con los atributos codTel, user, horaIni.
     * @return _sesion Objeto Sesion con idSesion y Status seteados.
     */
    private synchronized Sesion almacenarInicioSesion(Sesion _sesion){        
        try{
            int codtel  = _sesion.getCodtel();
            String user = _sesion.getUser();
            String hora = _sesion.getHoraIni();
            System.out.println("user = " + user);

            Connection conn = BaseDatos.getConexionBd();
            String insertar= "INSERT INTO Bd.Sesion (user,codtel,inicio) VALUES ('"+user+"','"+codtel+"','"+hora+"');";
            String buscar  = "SELECT MAX(idSesion) as idSesion FROM Bd.Sesion WHERE user LIKE '"+user+"';";
            PreparedStatement ps = conn.prepareStatement(insertar);
            PreparedStatement ps2= conn.prepareStatement(buscar);
            boolean rs = ps.execute();
            ResultSet rs2 = ps2.executeQuery();
            if (rs2.next()){
                _sesion.setId(rs2.getInt("idSesion"));
                //Log.newLog("Sesion Almacenada con Exito", Utils.getTime(),3,_sesion.getId(),_sesion.getUser());
                System.out.println("Sesion Almacenada con Exito");
                _sesion.setStatus(1);
            }
        }catch(Exception e){
            System.out.println("Error en Almacenar Inicio Sesion !: " + e);
            _sesion.setStatus(-4);
        }
        return _sesion;
    }
    /**
     * Retorna true si finaliza sesion, false si la sesion no es valida o ya esta finalizada.
     * Recibe objeto tipo Sesion actualiza la columna fin en la tabla Sesion agregando
     * hora final a la Sesion entrante.
     * @param _sesion Debe tener todos sus atributos llenos menos horaFin.
     * @return  
     */
    @WebMethod(operationName = "finalizarSesion")
    public boolean finalizarSesion(@WebParam(name = "sesion",
                                   targetNamespace = target) Sesion _sesion){
        int idSesionAbierta = Validadores.validarSesionesAbiertas(_sesion);
        if(idSesionAbierta == _sesion.getId()){
            try{
                Connection con= BaseDatos.getConexionBd();
                String time = Utils.getTime();
                String actualizar="UPDATE Sesion SET fin = '"+time+"' WHERE idSesion="+_sesion.getId()+"";
                PreparedStatement ps2= con.prepareStatement(actualizar);
                boolean rs=ps2.execute();
                con.close();
                //Log.newLog("Sesion Finalizada", time, 4, _sesion.getId(), _sesion.getUser());
                System.out.println("Sesion Finalizada con Exito");
                return true;
            }catch(Exception e){
                e.printStackTrace();
                System.out.println("finalizarSesion() Error: = " + e);                
            }
        }
        else{
            System.out.println("Sesion ya Finalizada");
        }
        return true;
    }
    /**
     * Devuelve un objeto tipo Producto con las caracteristicas que reuna en BD.
     * Recibe id o el nombre del producto y la sesion del ulsuario,
     * busca en BD de acuerdo al id o el nombre del producto y setea los resultados a un objeto tipo Producto.
     * @param _producto Este parametro es una cadena de texto que sera usado como nombre o id del producto.
     * @param _sesion Objeto sesion que debe traer todos sus atributos seteados (menos fin) para el buen
     * funcionamiento del metodo.
     * @return infoProducto es objeto tipo Producto se le es seteado todos los parametros obtenidos en la BD.
     */
    @WebMethod(operationName = "infoProducto")
    private Producto infoProducto (@WebParam(name = "producto",
                                   targetNamespace = target) String _producto, 
                                   @WebParam(name = "sesion",
                                   targetNamespace = target) Sesion _sesion){
        Producto producto= new Producto();
        producto=Inventario.obtenerProducto(_producto);
//        try{
//            Connection conn = BaseDatos.getFoxPro().getConnection();
//            String buscar = "SELECT * FROM xxxxx WHERE xxxxx  = '"+_producto+"' OR xxxxxx = '%"+_producto+"%'";  
//            //completar nombre de tabla y campo id o nombre del producto en tabla
//            PreparedStatement ps = conn.prepareStatement(buscar);
//            ResultSet rs = ps.executeQuery();
//            if(rs.isBeforeFirst()){
//                while(rs.next()){
//                    producto.setCodigo(rs.getString(0));  // modificar los "0" por el numero del valor o el nombre en la tabla
//                    producto.setDescripcion(rs.getString(0));
//                    producto.setOferta(rs.getString(0));
//                    producto.setPvp(rs.getDouble(0));
//                    producto.setSugerido(rs.getDouble(0));
//                    producto.setTipo(rs.getString(0));
//                    producto.setTipoPrecio(rs.getString(0));
//                    producto.setUniporem(rs.getInt(0));;
//                    conn.close();
//                }
//            }
//            else{
//                System.out.println("No se encuentra producto para: "+_producto);
//            }
//        }
//        catch (Exception e){
//            e.printStackTrace();
//            System.out.println("e = " + e);
//    }
    return producto;}

    /**
     * Retorna true si realiza y registra un pedidio en BD, de lo contrario retorna false.
     * Recibe objetos tipo Pedido Atiende y Sesion
     * El objeto Pedido debe contener su atributo lista lleno, consiste en un Array de Items, los cuales almacenara
     * en la tabla items, asi como tambien registrar un pedido, relacionando cada pedido con varios items.
     * @param _pedido Debe contener el atributo lista y fecha llenos.
     * @param _atiende Debe tener todos sus atributos llenos menos horaFin.
     * @param _sesion Debe tener todos sus atributos llenos menos horaFin.
     * @return retorna true solo si el pedido fue agregado con exito a BD. de existir algun error retorna false.

     */

    @WebMethod(operationName = "realizarPedido")
    private boolean realizarPedido (@WebParam(name = "lista",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Pedido _pedido,
                                   @WebParam(name = "atiende",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Atiende _atiende, 
                                   @WebParam(name = "sesion",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Sesion _sesion){   
        boolean retorno=false;
        int idSesionAbierta = Validadores.validarSesionesAbiertas(_sesion);
        if(idSesionAbierta == _sesion.getId()){
            try {
//                valida que lleque el campo idAtiende
                if (_atiende.getIdAtiende()!=0){
                    Connection con = BaseDatos.getConexionBd();
                    String select ="SELECT idSolicitud FROM Solicitud where fk_idAtiende= "+_atiende.getIdAtiende()+"";
                    PreparedStatement ps = con.prepareStatement(select);
                    ResultSet rs = ps.executeQuery();
                    //valida que exista una solicitud para el atiente iniciado
                    if (rs.next()){
                        int idSolicitud=rs.getInt("idSolicitud");
                        String insert ="INSERT INTO Pedido (fecha,fk_idSolicitud) VALUES ('"+_pedido.getFecha()+"',"+idSolicitud+")";
                        String busca ="SELECT idPedido FROM Pedido WHERE fk_idSolicitud ="+idSolicitud+"";
                        PreparedStatement ps2 = con.prepareStatement(insert);
                        PreparedStatement ps3 = con.prepareStatement(busca);
                        ps2.execute();
                        ResultSet rs2 =ps3.executeQuery();
//                        valida que se haya agregado con exito el pedido
                        if (rs2.next()){
                            rs2.last();
                            int idPedido = rs2.getInt("idPedido");
                            ArrayList <Items> _lista=new ArrayList ();
                            _lista=_pedido.getLista();
//                            iterador en los valores del array entrante
                            for (int i=0; i<_lista.size();i++){
                                Items item=_lista.get(i);
                                String producto=item.getProducto();
                                int cant = item.getCant();
                                String empaque = item.getEmpaque();
                                char tramite = item.getTramite();
                                char estado=item.getEstado();
                                String insert2="INSERT INTO Items (producto,cantidad,empaque,tramite,estado,fk_idPedido) "
                                        + "VALUES ('"+producto+"',"+cant+",'"+empaque+"','"+tramite+"','"+estado+"',"+idPedido+")";
                                PreparedStatement ps4 = con.prepareStatement(insert2);
                                ps4.execute();
                            }
                            retorno= true;
                            con.close();
                        }
                        else
                            System.out.println("Pedido No Existe");
                        
                    }
                    else
                        System.out.println("Solicitud No Valida");
                }
                else
                    System.out.println("Atiende No Valido");
            }
            catch (Exception e) {
                    System.out.println("Error en realizarPedido"+ e);
                }
           }
        
        return retorno;
    }
    /**
     * Registra los datos de una operacion de cobranza en la BD.
     * Recibe objetos tipo Sesion y Cobranza.
     * @param _sesion Debe tener todos sus atributos llenos menos horaFin.
     * @param _cobranza Debe tener los atributos monto, fecha, formaPago e idCliente llenos.
     * 
     */
    @WebMethod(operationName = "realizarCobro")
    private void realizarCobro (@WebParam(name = "sesion",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Sesion _sesion,
                                @WebParam(name = "cobro",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios")  Cobranza _cobro){
       
        int idSesionAbierta = Validadores.validarSesionesAbiertas(_sesion);
        if(idSesionAbierta == _sesion.getId()){
            try{
                Connection con = BaseDatos.getConexionDiga();
                char formaPago=_cobro.getFormaPago();
                String insert="INSERT INTO Cobranza (fecha,monto,formaPago,fk_idCliente";
                String values=" VALUES ('"+_cobro.getFecha()+"',"+_cobro.getMonto()+",'"+_cobro.getFormaPago()+"','"+_cobro.getIdCliente()+"'";
                // verifica que no venga un campo requerido vacio
                if (_cobro.getMonto()!=0  && formaPago!=' ' && _cobro.getIdCliente()!=0){
                    String banco =_cobro.getBanco();    
                    String cheque =_cobro.getNumCheque();
                    String cuenta =_cobro.getCuentaCliente();
                    //si viene el numero de cuenta del cliente lo guarda en BD
                    if (!"".equals(cuenta)){
                        insert +=",cuentaCliente";
                        values +=",'"+cuenta+"'";
                    }
                    //si viene el numero de cheque lo guarda en BD
                    if (!"".equals(cheque)){
                        insert +=",numCheque";
                        values +=",'"+cheque+"'";
                    }
                    //si viene el nombre del banco lo guarda en BD
                    if (!"".equals(banco)){
                        insert +=",banco";
                        values +=",'"+banco+"'";
                    }
                insert += ")";
                values +=")";
                PreparedStatement ps=con.prepareStatement(insert+values);
                ps.execute();
                }
                else
                    System.out.println("Algun Campo incompleto");
                //Log.newLog("Cobro Registrado con Exito", Utils.getTime(), 5,_sesion.getId(), _sesion.getUser());

            }
            catch(Exception e){
            System.out.println("Error en Cobranza: "+e);
            }
       }else
           System.out.println("Sesion Invalida o Finalizada");
    }
     /**
      * Registra o restaura sesion Atiende, retornando id de Atiende.
      * Recibe objetos tipo Sesion y Cliente.
      * Crea un registro Atiende cuando el usuario comienza a atender un cliente.
     * @param _sesion Debe tener todos sus atributos llenos menos horaFin.
     * @param _cliente Debe tener lleno el atributo idCliente.
     * @return  registrarAtiende: un Integer con el id del atiende registrado
     * o de estar ya registrado restaura el atiende, de ocurrir algun error retorna cero.
     */
    @WebMethod(operationName = "registrarAtiende")
    private int registrarAtiende (@WebParam(name = "sesion",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Sesion _sesion,
                                   @WebParam(name = "cliente",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Cliente _cliente){
       
        int idCliente= _cliente.getIdCliente();
        int idSesion= _sesion.getId();
        ResultSet result;
        int idAtiende=0;
        if ( idCliente >0 || idSesion > 0){
            try {
                Connection con= BaseDatos.getConexionBd();
                String insert="INSERT INTO Atiende (status,inicio,enruta,idCliente,fk_idSesion)"
                    + " VALUES ('A','"+Utils.getTime()+"',1,"+idCliente+","+idSesion+" )";
                String select ="SELECT idAtiende FROM Atiende";
                String buscar= "SELECT fin FROM Atiende where fk_idSesion= "+idSesion+" ";
                PreparedStatement ps=con.prepareStatement(insert);
                PreparedStatement ps2=con.prepareStatement(select);
                PreparedStatement ps3=con.prepareStatement(buscar);
                ResultSet rs=ps3.executeQuery();
                rs.last();
                if (rs.getString(1) == null){
                    System.out.println("Ya tiene una sesion Atiende abierta");
                    idAtiende=rs.getInt(1);
                }
                else{
                    ps.execute();
                    //Log.newLog("Cliente Atendido", Utils.getTime(), 6, idSesion, _sesion.getIdUser());
                    result=ps2.executeQuery();
                    result.last();
                    idAtiende=result.getInt(1);
                    System.out.println("idAtiende: "+idAtiende);
                }
                
            } 
            catch (Exception e) {
                System.out.println("Error de conexion en la Operacion registrarAtiende "+e);
            }
        }
        else{
            System.out.println("Falta algun Campo");
        }
        return idAtiende;
    }
    /**
     * Genera un ArrayList con todos los clientes correspondientes al dia.
     * Recibe objetos Sesion y Ruta, busca en BD los cliente que corresponden al dia segun el idRuta.
     * @param _sesion Debe tener todos sus atributos llenos menos horaFin.
     * @param _ruta 
     * @return Retorna un Array lleno con objetos tipo Cliente.
     */
    @WebMethod(operationName = "solicitarClientesDia")
   private ArrayList <Cliente> solicitarClientesDia (@WebParam(name = "sesion",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Sesion _sesion,
                                       @WebParam(name = "ruta",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Ruta _ruta){
        ArrayList <Cliente> clientes = new ArrayList <Cliente>(); 
        try{
            int idSesionAbierta = Validadores.validarSesionesAbiertas(_sesion);        
            if(idSesionAbierta == _sesion.getId() && Validadores.validarRuta(_ruta)){
                ResultSet rs;
                Connection conn = BaseDatos.getConexionDiga();
                String buscar3 = "SELECT * FROM Diga.Cliente WHERE fk_idRuta = "+_ruta.getIdRuta()+"";
                PreparedStatement ps3 = conn.prepareStatement(buscar3);
                rs=ps3.executeQuery();
                if (rs.isBeforeFirst()){
                    while (rs.next()){
                            Cliente lista = new Cliente();
                            lista.setIdCliente(rs.getInt("idCliente"));
                            lista.setCodigo(rs.getString("codigo"));
                            lista.setNombre(rs.getString("nombre"));
                            lista.setRif(rs.getString("rif"));
                            lista.setIdRuta(rs.getInt("fk_idRuta"));
                            clientes.add(lista);
                    }
                    ps3.close();
                    conn.close();
                }
                else{
                    System.out.println("Ruta No Valida");
                }
            }else{
                System.out.println("Sesion no Valida o Finalizada");
            }
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("solicitarClientesDia Error= " + e);
        }
        return clientes;
    }
    /**
     * Genera un ArrayList con todas las facturas correspondientes a los clientes del dia.
     * Recibe objetos tipo Sesion y Ruta.
     * Devuelve un array con objetos tipo Factura con las facturas del dia.
     * @param _sesion Debe tener todos sus atributos llenos menos horaFin.
     * @param _ruta 
     * @return facturasDelDia tipo Array lleno con objetos Tipo factura, a su vez estas factura
     * con los atributos que tengan en BD.
     */
  @WebMethod(operationName = "facturasDelDia")
  private ArrayList <Factura> facturasDelDia (@WebParam(name = "sesion",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Sesion _sesion,
                                       @WebParam(name = "ruta",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Ruta _ruta){   
      ArrayList <Factura>listaFactura=new ArrayList();
      
      int idSesionAbierta = Validadores.validarSesionesAbiertas(_sesion);        
      if(idSesionAbierta == _sesion.getId() && Validadores.validarRuta(_ruta)){
          try{
            ResultSet rs;
            Connection conn = BaseDatos.getConexionBd();
            String buscar = "SELECT * FROM Cliente WHERE fk_idRuta = "+_ruta.getIdRuta()+"";
            PreparedStatement ps = conn.prepareStatement(buscar);
            rs=ps.executeQuery();
            while (rs.next()){
                    String buscar2 ="SELECT * FROM Factura WHERE fk_idCliente = "+rs.getInt(1)+"";
                    PreparedStatement ps2 = conn.prepareStatement(buscar2);
                    ResultSet rs2=ps2.executeQuery();
                    while (rs2.next()){
                        Factura factura = new Factura();
                        factura.setIdFactura(rs2.getInt(1));
                        factura.setMonto(rs2.getFloat(2));
                        factura.setReferencia(rs2.getString(3));
                        factura.setIdUsuario(rs2.getInt(4));
                        listaFactura.add(factura);
                    }
            }
            conn.close();
          } 
          catch(Exception e){
            e.printStackTrace();
            System.out.println("e = " + e);
          }
      }
      else
          System.out.println("Sesion o Ruta invalida");
      return listaFactura;

  }
  /**
   * Genera un ArrayList con todas las facturas de un cliente en especifico.
   * Recibe objetos tipo Sesion y Cliente.
   * Busca en BD todas las facturas de un cliente epecifico.
   * @param _sesion Debe tener todos sus atributos llenos menos horaFin.
   * @param _cliente debe tener el campo idCliente lleno.
   * @return clienteEspecifico: un ArrayList de objetos tipo Factura.
   */
  @WebMethod(operationName = "clienteEspecifico")
  private  ArrayList <Factura> clienteEspecifico  (@WebParam(name = "sesion",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Sesion _sesion,
                                       @WebParam(name = "ruta",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Cliente _cliente){
      ArrayList <Factura> factura=new ArrayList <Factura>();
      
      int idSesionAbierta = Validadores.validarSesionesAbiertas(_sesion);
      if(idSesionAbierta == _sesion.getId()){
        try{
            Connection conn = BaseDatos.getConexionBd();
            String buscar = "SELECT * FROM Factura WHERE fk_idCliente = "+_cliente.getIdCliente()+"";
            PreparedStatement ps = conn.prepareStatement(buscar);
            ResultSet rs2=ps.executeQuery();
            while (rs2.next()){
                Factura fact = new Factura();
                fact.setIdFactura(rs2.getInt("idFactura"));
                fact.setMonto(rs2.getFloat("monto"));
                fact.setReferencia(rs2.getString("referencia"));
                fact.setIdUsuario(rs2.getInt("fk_idCliente"));
                factura.add(fact);
            }
        }catch(Exception e){
                
                System.out.println("e = " + e);
        }
      }
      else
          System.out.println("Sesion o Ruta no Validas");
      return factura;
  }
  /**
   * Retorna true si finaliza la sesion y agrega hora final a una determinada sesion, de lo contrario retorna false.
   * Recibe objetos tipo Sesion y Atiende actualiza la columna fin en la tabla Atiende agregando
   * hora final al Atiende entrante.
   * @param _sesion Debe tener todos sus atributos llenos menos horaFin.
   * @param _atiende Debe tener el atributo idAtiende lleno.
   * @return 
   */
      @WebMethod(operationName = "finalizarAtiende")
    private  boolean finalizarAtiende(@WebParam(name = "sesion",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Sesion _sesion,
                                    @WebParam(name = "atiende",
                                   targetNamespace = "http://digamaracay3.dynalias.com:8080/WSS/Usuarios") Atiende _atiende){
        boolean retorno=false;
        int idSesionAbierta = Validadores.validarSesionesAbiertas(_sesion);
        if(idSesionAbierta == _sesion.getId()){
            try{
                Connection con= BaseDatos.getConexionBd();
                String time = Utils.getTime();
                String busca="SELECT fin FROM Atiende WHERE idAtiende= "+_atiende.getIdAtiende()+"";
                System.out.println("idAtiende "+_atiende.getIdAtiende());
                PreparedStatement ps=con.prepareStatement(busca);
                ResultSet rs2=ps.executeQuery();
                while(rs2.next()){
                    if (rs2.getString("fin") == null){
                        String actualizar="UPDATE Atiende SET fin = '"+time+"' WHERE idAtiende="+_atiende.getIdAtiende()+"";
                        PreparedStatement ps2= con.prepareStatement(actualizar);
                        ps2.execute();
                        //Log.newLog("Sesion Finalizada", time, 4, _sesion.getId(), _sesion.getUser());
                        System.out.println("Atiende Finalizada con Exito");
                        retorno= true;
                    }
                
                    else
                        System.out.println("Atiende Ya Finalizado");
                }
            }
            catch(Exception e){
                System.out.println("finalizarAtiende() Error: = " + e);                
            }
        }
        else{
            System.out.println("Sesion No Valida o Finalizada");
        }
        return retorno;
    }

}
